1. Field of Invention
This invention relates generally to communications, and more particularly, to a method and apparatus for forward error correction of a convolution type.
2. Description of the Related Art
Digital communications over a wired or wireless communication medium are typically impaired by noise within the transmission bandwidth. Transmit power its typically limited by practical considerations and the transmit signal is attenuated by path loss, multi-path distortions, and various forms of cross-talk. Typically a digital communication system is designed for the worst case signal quality at which the receiver is to operate. This signal quality is measured as an energy to noise ratio and is determined by the transmit power, path loss, noise and interference. The minimum energy at which data communications may be reliably received is the system threshold level. At the threshold level the probability of error for any digital transmission modulation protocol can be calculated. To reduce the error in signal transmission the digital data is encoded before transmission and decoded at the receiver. The coding technique is determined by the requirements of the application and the channel characteristics. Coding allows for detection and correction of errors in the transmitted data at the expense of additional processing overhead and or a lower effective data rate. Two classes of coding, block and convolutional coding are utilized to decrease the probability for error. Reed-Solomon and Viterbi are common forms of block and convolutional coding respectively. A convolutional encoder encodes each input bit into code bits according to a set of generator polynomials. Each generator polynomial computes one code bit and the code bits are combined into a code branch. The constraint length, a.k.a. the maximul memory order, “m” of the encoder is the number of data bits used in the encoding process and determines the error correcting capability of the code. Long constraint lengths yield better performance at the expense of hardware and computational complexity. A state is designated by the m−1 prior input bits and there are 2m−1 states. A Viterbi algorithm is typically used to decode the transmitted code branches at the receiver. A Viterbi algorithm performs the maximum likelihood decoding of the transmitted data path. For each received code branch, the branch metric of all branches entering each state is computed and added to the corresponding prior path metrics and the best path entering each state is selected and stored as the new path metrics. Each Viterbi decoded bit is obtained by tracing a path back through the various path metrics to find the maximum likelihood path.
FEC techniques and in particular convolution encoding/decoding can be applied across a range of wired and wireless modulation protocols including: discrete multi-tone (DMT), carrierless AM/PM (CAP), quadrature amplitude modulation (QAM), quadrature phase amplitude modulation (QPAM), code division multiple access (CDMA), binary shift keying (BPSK), quaternary phase shift keying (QPSK), etc.
What is needed are computationally efficient methods and apparatus for reducing the complexity and increasing the throughput of convolutional encoders.